/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import modelo.Questao;
import modelo.QuestionarioHasQuestao;
import persistencia.QuestionarioFacade;
import persistencia.QuestionarioHasQuestaoFacade;
import util.QuestaoModel;

/**
 *
 * @author J.C
 */
@ManagedBean
@SessionScoped
public class MbEditarQuestionario implements Serializable {

	private QuestaoModel questaoModel;
    private List<QuestionarioHasQuestao> questionarioHasQuests = null;
    private Integer idQuestionario;
    private List<Questao> quests;
    private Questao[] selecionaQuests = null;
    private List<QuestionarioHasQuestao> questionarioHasQuestsDelete = null;
    @EJB
    private QuestionarioFacade ejbQuestionarioFacade;
    @EJB
    private QuestionarioHasQuestaoFacade ejbQuestionarioHasQuestaoFacade;

    public MbEditarQuestionario() {
    }

    public List<QuestionarioHasQuestao> getQuestionarioHasQuests() {
        return questionarioHasQuests;
    }

    public void setQuestionarioHasQuests(List<QuestionarioHasQuestao> questionarioHasQuests) {
        this.questionarioHasQuests = questionarioHasQuests;
    }

    public Integer getIdQuestionario() {
        return idQuestionario;
    }

    public void setIdQuestionario(Integer idQuestionario) {
        this.idQuestionario = idQuestionario;
    }

    public List<Questao> getQuests() {
        return quests;
    }

    public void setQuests(List<Questao> quests) {
        this.quests = quests;
    }

	public Questao[] getSelecionaQuests() {
		return selecionaQuests;
	}

	public void setSelecionaQuests(Questao[] selecionaQuests) {
		this.selecionaQuests = selecionaQuests;
	}

	public QuestaoModel getQuestaoModel() {
		return questaoModel;
	}

	public void setQuestaoModel(QuestaoModel questaoModel) {
		this.questaoModel = questaoModel;
	}

    @PostConstruct
    public void init() {
        MbVisualizacaoQuestionario mbv = (MbVisualizacaoQuestionario) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("mbVisualizacaoQuestionario");
        if (mbv != null && mbv.getSelecionado() != null) {
            idQuestionario = mbv.getSelecionado().getIdquestionario();

            if (questionarioHasQuests == null) {
                questionarioHasQuests = new ArrayList<>();
            }
            questionarioHasQuests = ejbQuestionarioFacade.findQuestao(this.idQuestionario);

            if (quests == null) {
                quests = new ArrayList<>();
            }
            for (int i = 0; i < questionarioHasQuests.size(); i++) {
                quests.add(questionarioHasQuests.get(i).getQuestao());
            }
        } else {
            System.out.println("VISHHHHHHHHH ###############");
        }
		
		questaoModel = new QuestaoModel(quests);

    }

    public void lol() {
        System.out.println("lolololololololol");
        for (int i = 0; i < 10; i++) {
        }
        return;
    }

    public void exclusao() {
        System.out.println("ioooiob");
        if (selecionaQuests == null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Questão(ões) não Selecionada(s).", "Por favor selecione uma ou mais questões."));
        } else {
            if (selecionaQuests.length == 0) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Questão(ões) não Selecionada(s).", "Por favor selecione uma ou mais questões."));
            } else {
                if (questionarioHasQuestsDelete == null) {
                    questionarioHasQuestsDelete = new ArrayList<QuestionarioHasQuestao>();
                }
                for (int j = 0; j < questionarioHasQuests.size(); j++) {
                    for (int i = 0; i < selecionaQuests.length; i++) {
                        if (questionarioHasQuests.get(j).getQuestao().equals(selecionaQuests[i])) {
                            questionarioHasQuestsDelete.add(questionarioHasQuests.get(j));
                            break;
                        }
                    }
                }
                for (int i = 0; i < questionarioHasQuestsDelete.size(); i++) {
                    ejbQuestionarioHasQuestaoFacade.remove(questionarioHasQuestsDelete.get(i));
                }
            }
        }
    }
}
